Repository navigation
Publish stable releases under the npm dist-tag latest - #33
Merged
Merged
Conversation
Stable 1.1.x releases went to the dist-tag `module` while `latest` stayed on
the non-module 1.0.8, so `npm i convertapi-js`, the npm package page and
unversioned CDN URLs served a 2022 build that cannot run the README's
`import ConvertApi from 'convertapi-js'` and `ConvertApi.auth('api_token')`.
Stable releases now take `latest`; `module` stays on 1.1.11. Pages that load
the non-module build with a script tag pin it at 1.0.8. The CHANGELOG names
1.1.11, since the v1.1.10 Release never reached npm.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🔵 Needs a closer look
Moving latest breaks legacy unversioned CDN consumers and can upgrade unlocked npm installs to incompatible APIs, requiring maintainer confirmation of rollout timing and coordinated website migration.
No open issues 🎉
What changed in this PR
Changes future stable releases of convertapi-js to use npm’s latest dist-tag, aligning default installs with the documented ES module API. Merging alone does not move the existing npm tag.
Changes:
- Switches stable publishing from
moduletolatest, preserving pre-release and maintenance routing. - Documents the frozen
moduletag and version pinning for legacy script-tag consumers. - Updates release examples to v1.1.12 and corrects the changelog’s last published version to 1.1.11.
| File | Description |
|---|---|
| RELEASING.md | Updates dist-tag policy, release examples, and legacy migration guidance. |
| README.md | Adds a version-pinned script URL for the non-module build. |
| CHANGELOG.md | Records the tag transition and clarifies the 1.1.11 release history. |
| .github/workflows/publish.yml | Sets STABLE_DIST_TAG to latest and updates explanatory comments. |
Review effort: Balanced
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
npm view convertapi-js dist-tagsshowslatest: 1.0.8,module: 1.1.11anddebug: 1.1.9-debug.3.Since 2022-06-21 the ES module line (1.1.x) has gone to the dist-tag
module.latestwas kept on 1.0.8,the last non-module build (git tag
last_nonmodule), on purpose. That kept pages working that load thebuild with an unversioned script tag,
https://unpkg.com/convertapi-js/lib/convertapi.js, which is the URLthe README gave before 2022.
publish.yml(STABLE_DIST_TAG: module) and RELEASING.md kept that rule.What it costs today:
npm i convertapi-jsis the install command on https://www.npmjs.com/package/convertapi-js, and itinstalls 1.0.8.
ConvertApinamespace with no exports, whoseauth()takes{secret}or{apiKey, token}.import ConvertApi from 'convertapi-js'andConvertApi.auth('api_token'). Neither works on 1.0.8:token=undefined, and the API answers 401.(
ConvertApi.auth({secret: ...})), instead of 1.1.11 with provenance.npm i convertapi-jswrites"^1.0.8"into package.json. GitHub code search returns 100 package.jsonfiles that list convertapi-js; 39 of them use that range.
What changes
publish.yml:STABLE_DIST_TAG: latest, so a stable release from main takeslatest. Nothing elsechanges:
next;lateststill goes tomaintenance.modulestays on 1.1.11 and is no longer moved;<script src="https://unpkg.com/convertapi-js@1.0.8/lib/convertapi.js"></script>.failed (fixed in Publish the tarball by a ./ path #28).
Who this breaks, and when
latestwas moved to 1.1.11 on 2026-11-12 withnpm dist-tag add convertapi-js@1.1.11 latest, so theeffects below have started. This PR makes the next stable release keep
latest(without it, the releasewould go to
moduleandlatestwould stay on 1.1.11). Rollback:npm dist-tag add convertapi-js@1.0.8 latest.Since the move:
Unversioned script tags. These URLs serve 1.1.x when no version is given:
https://unpkg.com/convertapi-js/lib/convertapi.jsandhttps://cdn.jsdelivr.net/npm/convertapi-js/lib/convertapi.jsreturn 404, because 1.1.x has nolib/;https://cdn.jsdelivr.net/npm/convertapi-js, loaded as a classic script, fails onimport.Pinning
@1.0.8fixes them. In the last 30 days jsDelivr served 1.0.8's/lib/convertapi.js343 times,pinned and unversioned URLs counted together; unpkg publishes no numbers.
^1.0.8ranges. A project with"convertapi-js": "^1.0.8"gets 1.1.x if it installs without alockfile or runs
npm update, because npm prefers thelatestversion when it satisfies the range.Lockfiles keep 1.0.8.
@module.npm i convertapi-js@modulestill installs 1.1.11.A blog post on convertapi.com, https://www.convertapi.com/blog/create-online-pdf-converter-using-js, loads
the unversioned unpkg URL. It needs its own fix on the site; its example already fails on 1.0.8, because it
calls
ConvertApi.auth('api_token').Checks
publish.ymlparses as YAML. The only functional change is theSTABLE_DIST_TAGvalue.publish.ymlcannot run in a pull request. It next runs on the next GitHub Release.buildcheck covers the rest of the repository.CHANGELOG.md and RELEASING.md record the date of the move.
🤖 Generated with Claude Code